home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / bfb / bfb.h < prev   
C/C++ Source or Header  |  2006-05-08  |  4KB  |  126 lines

  1. /*
  2.  *  bfb/bfb.h
  3.  *
  4.  *  Copyright (c) 2002 Christian W. Zuckschwerdt <zany@triq.net>
  5.  * 
  6.  *  This program is free software; you can redistribute it and/or modify it
  7.  *  under the terms of the GNU General Public License as published by the Free
  8.  *  Software Foundation; either version 2 of the License, or (at your option)
  9.  *  any later version.
  10.  *
  11.  *  This program is distributed in the hope that it will be useful, but
  12.  *  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  13.  *  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  *  for more details.
  15.  *
  16.  *  You should have received a copy of the GNU General Public License
  17.  *  along with this program; if not, write to the Free Software
  18.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19.  *     
  20.  */
  21.  
  22. #ifndef BFB_H
  23. #define BFB_H
  24.  
  25. #include <inttypes.h>
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. #ifdef _WIN32
  32. #include <windows.h>
  33. typedef HANDLE fd_t;
  34. #else
  35. typedef int fd_t;
  36. #endif
  37.  
  38. #define    BFB_LOG_DOMAIN    "bfb"
  39.  
  40. typedef struct {
  41.     uint8_t type;
  42.     uint8_t len;
  43.         uint8_t chk;
  44.         uint8_t payload[0]; /* ... up to 32 */
  45.     /* uint8_t xor; ? */
  46. } bfb_frame_t;
  47.  
  48. typedef struct {
  49.     uint8_t cmd;
  50.     uint8_t chk;
  51.     uint8_t seq;
  52.     uint8_t len0;
  53.     uint8_t len1;
  54.     uint8_t data[0]; /* ... up to 518 ? */
  55.     /* uint16_t crc; */
  56. } bfb_data_t;
  57.  
  58.  
  59. #define BFB_FRAME_CONNECT 0x02   /* ^B */
  60. #define BFB_FRAME_INTERFACE 0x01 /* ^A */
  61. #define BFB_FRAME_KEY 0x05       /* ^E */
  62. #define BFB_FRAME_AT 0x06        /* ^F */
  63. #define BFB_FRAME_EEPROM 0x14    /* ^N */
  64. #define BFB_FRAME_DATA 0x16      /* ^P */
  65.  
  66. #define BFB_CONNECT_HELLO 0x14   /* ^N */
  67. #define BFB_CONNECT_HELLO_ACK 0xaa
  68.  
  69. #define BFB_KEY_PRESS 0x06        /* ^F */
  70.  
  71. #define MAX_PACKET_DATA 32
  72. #define BFB_DATA_ACK 0x01 /* aka ok */
  73. #define BFB_DATA_FIRST 0x02 /* first transmission in a row */
  74. #define BFB_DATA_NEXT 0x03 /* continued transmission */
  75.  
  76. uint8_t    bfb_checksum(uint8_t *data, int len);
  77.  
  78. int    bfb_write_subcmd(fd_t fd, uint8_t type, uint8_t subtype);
  79. int    bfb_write_subcmd0(fd_t fd, uint8_t type, uint8_t subtype);
  80. int    bfb_write_subcmd8(fd_t fd, uint8_t type, uint8_t subtype, uint8_t p1);
  81. int    bfb_write_subcmd1(fd_t fd, uint8_t type, uint8_t subtype, uint16_t p1);
  82.  
  83. /* send a cmd, subcmd packet, add chk (two word parameter) */
  84. int    bfb_write_subcmd2(fd_t fd, uint8_t type, uint8_t subtype, uint16_t p1, uint16_t p2);
  85.  
  86. /* send a cmd, subcmd packet, add chk (three word parameter) */
  87. int    bfb_write_subcmd3(fd_t fd, uint8_t type, uint8_t subtype, uint16_t p1, uint16_t p2, uint16_t p3);
  88.  
  89. /* send a cmd, subcmd packet, add long, word parameter */
  90. int    bfb_write_subcmd_lw(fd_t fd, uint8_t type, uint8_t subtype, uint32_t p1, uint16_t p2);
  91.  
  92. int    bfb_stuff_data(/*@out@*/ uint8_t *buffer, uint8_t type, uint8_t *data, uint16_t len, uint8_t seq);
  93.  
  94. int    bfb_write_packets(fd_t fd, uint8_t type, uint8_t *buffer, int length);
  95.  
  96. #define bfb_write_at(fd, data) \
  97.     bfb_write_packets(fd, BFB_FRAME_AT, data, strlen(data))
  98.  
  99. #define bfb_write_key(fd, data) \
  100.     bfb_write_subcmd8(fd, BFB_FRAME_KEY, BFB_KEY_PRESS, data)
  101.  
  102. int    bfb_send_data(fd_t fd, uint8_t type, uint8_t *data, uint16_t length, uint8_t seq);
  103.  
  104. #define bfb_send_ack(fd) \
  105.     bfb_send_data(fd, BFB_DATA_ACK, NULL, 0, 0)
  106.  
  107. #define bfb_send_first(fd, data, length) \
  108.     bfb_send_data(fd, BFB_DATA_FIRST, data, length, 0)
  109.  
  110. #define bfb_send_next(fd, data, length, seq) \
  111.     bfb_send_data(fd, BFB_DATA_NEXT, data, length, seq)
  112.  
  113.  
  114. /*@null@*/ bfb_frame_t *
  115.     bfb_read_packets(uint8_t *buffer, int *length);
  116.  
  117. int    bfb_assemble_data(/*@null@*/ /*@out@*/ bfb_data_t **data, int *size, int *len, bfb_frame_t *frame);
  118.  
  119. int    bfb_check_data(bfb_data_t *data, int len);
  120.  
  121. #ifdef __cplusplus
  122. }
  123. #endif
  124.  
  125. #endif /* BFB_H */
  126.